Hi 大家好,
今天要開始介紹Python中的檔案處理篇之續集,那我們開始吧!
繼上一篇使用open()函數來開啟一個文件,並且返回一個文件對象物件。這個函數還可以接收多個參數,其中包括buffering
、encoding
、errors
和 newlines
等參數。這些參數的設定,會影響到文件的讀取和寫入的行為。
用來設定緩衝區
b""
)行緩衝
(即每行寫入或讀取後會刷新緩衝區)指定大小的緩衝區
buffering設定為0
:
bytes
形式表示二進制數據寫入文件
wb
模式來寫入文件
with open('example.txt', 'wb', buffering=0) as file:
file.write(b"Some data...\n")
file.write(b"More data...\n")
# example.txt
Some data...
More data...
1
:
行緩衝
模式時,數據會在緩衝區累積到一行結束,也就是遇到換行符號'\n'
,才會被寫入到文件w
模式來寫入緩衝區
with open('example.txt', 'w', buffering=1) as file:
file.write("Some data...\n")
file.write("More data...\n")
# example.txt
Some data...
More data...
encoding
參數,用來指定文件使用什麼樣的的編碼格式,如 utf-8、ascii等errors
參數,用來指定錯誤處理方式,例如當遇到無法解碼的字符時該怎麼處理常見的errors參數值
有以下幾種:
static
: 是預設參數值,如果遇到錯誤會觸發UnicodeDecodeError
ignore
: 如果遇到無法解碼的文字符號,就會選擇忽略replace
: 用替代文字符號替換無法解碼的文字符號 (通常使用?
)>>> a = "你好helloこんにちは"
>>> a
'你好helloこんにちは'
>>> a.encode("utf-8").decode("utf-8", "ignore")
'你好helloこんにちは'
>>> a.encode("utf-8").decode("ascii", "ignore")
'hello' <==== 忽略無法解碼的字符
>>> a.encode("utf-8").decode("ascii", "replace")
'������hello���������������' <==== 無法解碼的字符使用 ? 來替代
>>>
newlines
參數,用來控制文件中行結束字符的處理方式。包含以下幾種字符:
標準化
為空字符
Unix
標準的換行符Windows
標準的換行符Mac
標準的換行符將所有行結束符轉換為'\n'
with open('example.txt', 'w', newline='\n') as f:
f.write("Hello\nWorld\n")
Hello
World <==== 換下一行
<==== 換下一行
with open('example.txt', 'w', newline='\n') as f:
f.write("Hello, World\n")
Hello, World
<==== 換下一行
那今天就介紹到這裡,我們明天見~